#ifndef GAME_OVER_STATE_
#define GAME_OVER_STATE_

#include <string>
#include "menu_state.h"
#include "game_object.h"
#include "menu_state.h"
#include "play_state.h"
#include "game.h"
#include "animated_graphic.h"
#include "state_parser.h"

// GameOverState inherit from MenuState since we want to handle callbacks.
class GameOverState : public MenuState {
private:
    static void GameOverToMain_();
    static void RestartPlay_();
    static const std::string kGameOverID;
    std::vector<GameObject*> game_objects_;

    virtual void setCallbacks(const std::vector<Callback>& callbacks);

public:
    virtual void Update() override;
    virtual void Render() override;
    virtual bool OnEnter() override;
    virtual bool OnExit() override;
    virtual std::string get_stateid() const override { return kGameOverID; }
};

#endif // GAME_OVER_STATE_
